<?php

/**
 * This is the model class for table "{{persona}}".
 *
 * The followings are the available columns in table '{{persona}}':
 * @property integer $persona_id
 * @property string $persona_nombres_apellidos
 * @property string $persona_genero
 * @property double $persona_altura_cm
 * @property double $persona_peso_kg
 * @property string $persona_tipo_sangre
 * @property string $persona_tipo_identificacion
 * @property string $persona_numero_identificacion
 * @property string $persona_fecha_expiracion_documento
 * @property string $persona_fecha_nacimiento
 * @property string $persona_direccion
 * @property string $persona_telefono
 * @property string $persona_movil
 * @property string $persona_email
 * @property string $persona_fecha_registro
 * @property string $persona_ip_registro
 * @property integer $persona_ciudad_estado
 * @property integer $user_id
 * @property integer $persona_pais
 * @property integer $persona_nacionalidad
 * @property string $persona_nombre_credencial
 *
 * The followings are the available model relations:
 * @property InscripcionNominal[] $inscripcionNominals
 * @property Users $user
 * @property Pais $personaPais
 * @property Pais $personaNacionalidad
 */
class Persona extends CActiveRecord
{
	/**
	 * Returns the static model of the specified AR class.
	 * @return Persona the static model class
	 */
	public static function model($className=__CLASS__)
	{
		return parent::model($className);
	}

	/**
	 * @return string the associated database table name
	 */
	public function tableName()
	{
		return '{{persona}}';
	}

	/**
	 * @return array validation rules for model attributes.
	 */
	public function rules()
	{
		// NOTE: you should only define rules for those attributes that
		// will receive user inputs.
		return array(
			/*
			array('persona_nombres,persona_apellidos,persona_nombre_credencial,persona_genero,persona_email,persona_movil,persona_altura_cm,persona_peso_kg,persona_tipo_sangre,persona_numero_identificacion,persona_tipo_identificacion,persona_fecha_expiracion_documento,persona_fecha_nacimiento,persona_pais,persona_nacionalidad,persona_ciudad_estado,persona_direccion,persona_telefono,persona_email,inscripcion_evento,inscripcion_categoria,inscripcion_aplica,inscripcion_deporte,inscripcion_modalidad', 'required','on'=>'atletas'),			
			array('persona_email', 'email','on'=>'atletas'),	
			array('persona_nombres,persona_apellidos', 'length', 'max'=>100,'min'=>3,'tooLong'=>'El nombre y apellido no debe exceder 100 caracteres','tooShort'=>'El nombre y apellido debe tener mas de 10 caracteres','on'=>'atletas'),
			array('persona_nombre_credencial', 'length', 'max'=>45,'min'=>10,'tooLong'=>'El nombre de la credencial no debe exceder 45 caracteres','tooShort'=>'El nombre de la credencial debe tener mas de 10 caracteres','on'=>'atletas'),	
			array('persona_numero_identificacion', 'length', 'max'=>45,'min'=>5,'tooLong'=>'El número de identificación no debe exceder 45 caracteres','tooShort'=>'El número de identificación debe tener mas de 5 caracteres','on'=>'atletas'),
			array('persona_direccion', 'length', 'max'=>500,'min'=>5,'tooLong'=>'La dirección no debe exceder 500 caracteres','tooShort'=>'La dirección debe tener mas de 5 caracteres','on'=>'atletas'),		
			array('persona_ciudad_estado', 'length', 'max'=>80,'min'=>3,'tooLong'=>'El nombre de la ciudad o estado no debe exceder 80 caracteres','tooShort'=>'El nombre de la ciudad o estado debe tener mas de 3 caracteres','on'=>'atletas'),
			array('persona_altura_cm','numerical', 'integerOnly'=>false,'min'=>'100','max'=>'250','tooBig'=>'La altura no debe exceder 250 CM.','tooSmall'=>'La altura debe ser más de 100 CM.','on'=>'atletas'),
			array('persona_peso_kg','numerical', 'integerOnly'=>false,'min'=>20,'max'=>220,'tooBig'=>'El peso no debe exceder 120 KG.','tooSmall'=>'El peso debe ser más de 20 KG.','on'=>'atletas'),
			*/
						
			array('persona_nombres_apellidos,persona_nombre_credencial,persona_tipo_sangre,persona_numero_identificacion,persona_tipo_identificacion', 'required'),			
			//array('persona_email', 'email','on'=>'todos'),	
			array('persona_nombres_apellidos', 'length', 'max'=>100,'min'=>3,'tooLong'=>'El nombre y apellido no debe exceder 100 caracteres','tooShort'=>'El nombre y apellido debe tener mas de 10 caracteres'),
			array('persona_nombre_credencial', 'length', 'max'=>45,'min'=>10,'tooLong'=>'El nombre de la credencial no debe exceder 45 caracteres','tooShort'=>'El nombre de la credencial debe tener mas de 10 caracteres'),	
			array('persona_numero_identificacion', 'length', 'max'=>45,'min'=>5,'tooLong'=>'El número de identificación no debe exceder 45 caracteres','tooShort'=>'El número de identificación debe tener mas de 5 caracteres'),
			array('persona_email,persona_genero,persona_movil,persona_altura_cm,persona_peso_kg,persona_tipo_identificacion,persona_fecha_expiracion_documento,persona_fecha_nacimiento,persona_pais,persona_nacionalidad,persona_ciudad_estado,persona_direccion,persona_telefono,', 'length', 'min'=>0),
		
			// The following rule is used by search().
			// Please remove those attributes that should not be searched.
			array('persona_id, persona_nombres_apellidos, persona_genero, persona_altura_cm, persona_peso_kg, persona_tipo_sangre, persona_tipo_identificacion, persona_numero_identificacion, persona_fecha_expiracion_documento, persona_fecha_nacimiento, persona_direccion, persona_telefono, persona_movil, persona_email, persona_fecha_registro, persona_ip_registro, persona_ciudad_estado, user_id, persona_pais, persona_nacionalidad, persona_nombre_credencial','search', 'safe', 'on'=>'search'),
		);
	}

	/**
	 * @return array relational rules.
	 */
	public function relations()
	{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
			'inscripcionNominals' => array(self::HAS_MANY, 'InscripcionNominal', 'inscripcion_nominal_persona'),
			'user' => array(self::BELONGS_TO, 'Users', 'user_id'),
			'personaPais' => array(self::BELONGS_TO, 'Pais', 'persona_pais'),
			'personaNacionalidad' => array(self::BELONGS_TO, 'Pais', 'persona_nacionalidad'),
		);
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels()
	{
		return array(
			'persona_id' => 'Persona',
			'persona_nombres_apellidos' => 'Persona Nombres Apellidos',
			'persona_genero' => 'Persona Genero',
			'persona_altura_cm' => 'Persona Altura Cm',
			'persona_peso_kg' => 'Persona Peso Kg',
			'persona_tipo_sangre' => 'Persona Tipo Sangre',
			'persona_tipo_identificacion' => 'Persona Tipo Identificacion',
			'persona_numero_identificacion' => 'Persona Numero Identificacion',
			'persona_fecha_expiracion_documento' => 'Persona Fecha Expiracion Documento',
			'persona_fecha_nacimiento' => 'Persona Fecha Nacimiento',
			'persona_direccion' => 'Persona Direccion',
			'persona_telefono' => 'Persona Telefono',
			'persona_movil' => 'Persona Movil',
			'persona_email' => 'Persona Email',
			'persona_fecha_registro' => 'Persona Fecha Registro',
			'persona_ip_registro' => 'Persona Ip Registro',
			'persona_ciudad_estado' => 'Persona Ciudad Estado',
			'user_id' => 'User',
			'persona_pais' => 'Persona Pais',
			'persona_nacionalidad' => 'Persona Nacionalidad',
			'persona_nombre_credencial' => 'Estado',
			'organizacion_responsable' => 'Organizacion Responsable',
		);
	}

	/**
	 * Retrieves a list of models based on the current search/filter conditions.
	 * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
	 */
	public function search()
	{
		// Warning: Please modify the following code to remove attributes that
		// should not be searched.

		$criteria=new CDbCriteria;

		$criteria->compare('persona_id',$this->persona_id);
		$criteria->compare('persona_nombres_apellidos',$this->persona_nombres_apellidos,true);
		$criteria->compare('persona_genero',$this->persona_genero,true);
		$criteria->compare('persona_altura_cm',$this->persona_altura_cm);
		$criteria->compare('persona_peso_kg',$this->persona_peso_kg);
		$criteria->compare('persona_tipo_sangre',$this->persona_tipo_sangre,true);
		$criteria->compare('persona_tipo_identificacion',$this->persona_tipo_identificacion,true);
		$criteria->compare('persona_numero_identificacion',$this->persona_numero_identificacion,true);
		$criteria->compare('persona_fecha_expiracion_documento',$this->persona_fecha_expiracion_documento,true);
		$criteria->compare('persona_fecha_nacimiento',$this->persona_fecha_nacimiento,true);
		$criteria->compare('persona_direccion',$this->persona_direccion,true);
		$criteria->compare('persona_telefono',$this->persona_telefono,true);
		$criteria->compare('persona_movil',$this->persona_movil,true);
		$criteria->compare('persona_email',$this->persona_email,true);
		$criteria->compare('persona_fecha_registro',$this->persona_fecha_registro,true);
		$criteria->compare('persona_ip_registro',$this->persona_ip_registro,true);
		$criteria->compare('persona_ciudad_estado',$this->persona_ciudad_estado);
		$criteria->compare('user_id',$this->user_id);
		$criteria->compare('persona_pais',$this->persona_pais);
		$criteria->compare('persona_nacionalidad',$this->persona_nacionalidad);
		$criteria->compare('persona_nombre_credencial',$this->persona_nombre_credencial,true);
		$criteria->compare('organizacion_responsable',$this->organizacion_responsable,true);
		
		//public $persona_nombre_credencial;
		
		$criteria->with=array('inscripcionNominals');
		if(strlen($this->persona_nombre_credencial))
		$criteria->addSearchCondition('inscripcionNominal.inscripcion_nominal_estado',$this->persona_nombre_credencial);
		
		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
		));
	}
}